/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.jomijushi.fid.dominio;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author jcgrados
 */
@Entity
@Table(name = "fid_producto_servicio", catalog = "fid", schema = "")
@PrimaryKeyJoinColumn(name="fid_producto_venta_id")
//para Impresion y Edicion
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorValue("servicio")
@DiscriminatorColumn(discriminatorType=DiscriminatorType.STRING, name="tipo")
///

//@NamedQueries({@NamedQuery(name = "FidProductoServicio.findAll", query = "SELECT f FROM FidProductoServicio f"), @NamedQuery(name = "FidProductoServicio.findByFidProductoVentaId", query = "SELECT f FROM FidProductoServicio f WHERE f.id = :fidProductoVentaId"), @NamedQuery(name = "FidProductoServicio.findByFechaEntrada", query = "SELECT f FROM FidProductoServicio f WHERE f.fechaEntrada = :fechaEntrada"), @NamedQuery(name = "FidProductoServicio.findByFechaSalida", query = "SELECT f FROM FidProductoServicio f WHERE f.fechaSalida = :fechaSalida"), @NamedQuery(name = "FidProductoServicio.findByCreatedAt", query = "SELECT f FROM FidProductoServicio f WHERE f.createdAt = :createdAt"), @NamedQuery(name = "FidProductoServicio.findByUpdatedAt", query = "SELECT f FROM FidProductoServicio f WHERE f.updatedAt = :updatedAt")})
public class FidProductoServicio extends FidProductoVenta implements Serializable {
    private static final long serialVersionUID = 1L;
 
    @Column(name = "fechaEntrada")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaEntrada;
    @Column(name = "fechaSalida")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaSalida;
    @Column(name = "created_at")
    @Temporal(TemporalType.TIMESTAMP)
    private Date createdAt;
    @Column(name = "updated_at")
    @Temporal(TemporalType.TIMESTAMP)
    private Date updatedAt;

   /* @OneToOne(cascade = CascadeType.ALL, mappedBy = "fidProductoServicio")
    private FidServicioDefinidoImpresion fidServicioDefinidoImpresion;*/
  /*  @OneToOne(cascade = CascadeType.ALL, mappedBy = "fidProductoServicio")
    private FidServicioDefinidoEdicion fidServicioDefinidoEdicion;*/
    @JoinColumn(name = "fid_producto_venta_id", referencedColumnName = "id", insertable = false, updatable = false)
    @OneToOne(optional = false)
    private FidProductoVenta fidProductoVenta;
    @JoinColumn(name = "fid_tipo_cliente_id", referencedColumnName = "id")
    @ManyToOne
    private FidTipoCliente fidTipoClienteId;
    @JoinColumn(name = "fid_dimension_foto_id", referencedColumnName = "id")
    @ManyToOne
    private FidDimensionFoto fidDimensionFotoId;

    public FidProductoServicio() {
    }

    public FidProductoServicio(Integer fidProductoVentaId) {
        this.id = fidProductoVentaId;
    }

    public Integer getFidProductoVentaId() {
        return this.id;
    }

    public void setFidProductoVentaId(Integer fidProductoVentaId) {
        this.id = fidProductoVentaId;
    }

    public void setCreatedAtProductoServicio(Date createdAt){
        this.createdAt = createdAt;
    }

    public void setUpdatedAtProductoServicio(Date updatedAt){
        this.updatedAt = updatedAt;
    }

    

    public Date getCreatedAtProductoServicio(){
        return this.createdAt;
    }

    public Date getUpdatedAtProductoServicio(){
        return this.updatedAt;
    }

    @Override
    public Date getFechaEntrada() {
        return fechaEntrada;
    }

    @Override
    public void setFechaEntrada(Date fechaEntrada) {
        this.fechaEntrada = fechaEntrada;
    }

    @Override
    public Date getFechaSalida() {
        return fechaSalida;
    }

    @Override
    public void setFechaSalida(Date fechaSalida) {
        this.fechaSalida = fechaSalida;
    }

    @Override
    public FidTipoCliente getFidTipoClienteId() {
        return fidTipoClienteId;
    }

    @Override
    public void setFidTipoClienteId(FidTipoCliente fidTipoClienteId) {
        this.fidTipoClienteId = fidTipoClienteId;
    }

    @Override
    public FidDimensionFoto getFidDimensionFotoId() {
        return fidDimensionFotoId;
    }

    @Override
    public void setFidDimensionFotoId(FidDimensionFoto fidDimensionFotoId) {
        this.fidDimensionFotoId = fidDimensionFotoId;
    }

    public FidProductoVenta getFidProductoVenta() {
        return fidProductoVenta;
    }

    public void setFidProductoVenta(FidProductoVenta fidProductoVenta) {
        this.fidProductoVenta = fidProductoVenta;
    }
    

   /* public FidServicioDefinidoImpresion getFidServicioDefinidoImpresion() {
        return fidServicioDefinidoImpresion;
    }

    public void setFidServicioDefinidoImpresion(FidServicioDefinidoImpresion fidServicioDefinidoImpresion) {
        this.fidServicioDefinidoImpresion = fidServicioDefinidoImpresion;
    }*/

 /*   public FidServicioDefinidoEdicion getFidServicioDefinidoEdicion() {
        return fidServicioDefinidoEdicion;
    }

    public void setFidServicioDefinidoEdicion(FidServicioDefinidoEdicion fidServicioDefinidoEdicion) {
        this.fidServicioDefinidoEdicion = fidServicioDefinidoEdicion;
    }*/

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (this.id != null ? this.id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof FidProductoServicio)) {
            return false;
        }
        FidProductoServicio other = (FidProductoServicio) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.jomijushi.fid.dominio.FidProductoServicio[fidProductoVentaId=" + this.id + "]";
    }

}